<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 方法要放到原型上
    // 属性应该放在对象上
    function Person(name, age, gender) {
      // console.log(this)
      this.name = name
      this.age = age
      this.gender = gender
    }

    function Star(name, age, gender) {
      // this.name = name
      // this.age = age
      // Person(name, age) // window
      // this -> 新创建的对象 --> ldh
      Person.call(this, name, age, gender) // 改变this指向
    }

    Person.prototype = {
      constructor: Person,
      eat() {
        console.log('吃')
      }
    }

    // 将 Star 的「原型对象」指向 Person 的「实例对象」
    Star.prototype = new Person()

    // 将 prototype 中的 constructor 指向回 Star
    Star.prototype.constructor = Star

    // function Student(name, age, gender) {
    //   Person.call(this, name, age, gender)
    // }

    // function Teacher(name, age, gender) {
    //   Person.call(this, name, age, gender)
    // }

    // 需求: ldh 可以直接使用 eat() / sleep() 等方法
    var ldh = new Star('刘德华', 18, '男')
    console.log(ldh)
    ldh.eat()

    
    // function getSum() {
    //   getMax()
    // }

    // function getMax() {
    //   console.log(this) // window
    // }

    // getSum()
  </script>
</body>

</html>